package com.dxl.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.dxl.base.Result;
import com.dxl.system.model.Groups;

import java.util.List;

/**
 * <b> 分组服务接口
 * </b><br><br><i>Description</i> :
 * <br>Date: 2019-09-25    <br>Author : dxl
 */
public interface GroupsService extends IService<Groups>   {

    /**
     * <b> 插入分组
     * </b><br><br><i>Description</i> : 不能为空：组名称-group_name ；不能重复：组名称-group_name  
     * @param groups Groups
     * @return com.dxl.base.Result Groups
     * <br><br>Date: 2019-09-25    <br>Author : dxl
     */
    public Result addOne(Groups groups);

    /**
     * <b> 删除分组
     * </b><br><br><i>Description</i> : 
     * @param groupsIds List: Integer
     * @return com.dxl.base.Result int
     * <br><br>Date: 2019-09-25    <br>Author : dxl
     */
    public Result delByIds(List<Integer> groupsIds);

    /**
     * <b> 删除分组及所有子分组和文件
     * </b><br><br><i>Description</i> :
     * @param groupsIds List: Integer
     * @return com.dxl.base.Result int
     * <br><br>Date: 2019-09-25    <br>Author : dxl
     */
    public Result delJoinByIds(List<Integer> groupsIds);

    /**
     * <b> 编辑分组
     * </b><br><br><i>Description</i> : 不能重复：组名称-group_name 
     * @param groups Groups
     * @return com.dxl.base.Result Groups
     * <br><br>Date: 2019-09-25    <br>Author : dxl
     */
    public Result editOne(Groups groups);

    /**
     * <b> ID查询分组
     * </b><br><br><i>Description</i> : 
     * @param groupsId Integer
     * @return com.dxl.base.Result: Groups
     * <br><br>Date: 2019-09-25    <br>Author : dxl
     */
    public Result getById(Integer groupsId);

    /**
     * <b> 条件查询分组
     * </b><br><br><i>Description</i> : 
     * @param groups Groups
     * @return com.dxl.base.Result List: Groups
     * <br><br>Date: 2019-09-25    <br>Author : dxl
     */
    public Result getList(Groups groups);

    /**
     * <b> 分页条件查询分组
     * </b><br><br><i>Description</i> : 
     * @param groups Groups, currentPage -Integer, pageSize -Integer
     * @return com.dxl.base.Result List: Groups
     * <br><br>Date: 2019-09-25     <br>Author : dxl
     */
    public Result getListByPage(Groups groups, Integer currentPage, Integer pageSize);

    /**
     * <b>  模糊查询分组
     * </b><br><br><i>Description</i> : 模糊查询；模糊字段(模式：单字段)：全匹配：group_name-组名称 
     * @param groups Groups
     * @return com.dxl.base.Result List: Groups
     * <br><br>Date: 2019-09-25    <br>Author : dxl
     */
    public Result getLikeGroups(Groups groups);

    /**
     * <b> 分页模糊查询分组
     * </b><br><br><i>Description</i> : 模糊查询；模糊字段(模式：单字段)：全匹配：group_name-组名称 
     * @param groups Groups, currentPage -Integer, pageSize -Integer
     * @return com.dxl.base.Result List: Groups
     * <br><br>Date: 2019-09-25     <br>Author : dxl
     */
    public Result getLikeGroupsByPage(Groups groups, Integer currentPage, Integer pageSize);

    /**
     * <b> 分组能否新增
     * </b><br><br><i>Description</i> : 不能为空：组名称-group_name ；不能重复：组名称-group_name  
     * @param groups Groups
     * @return com.dxl.base.Result boolean
     * <br><br>Date: 2019-09-25     <br>Author : dxl
     */
    public Result isGroupsAddable(Groups groups);

    /**
     * <b> 分组能否编辑
     * </b><br><br><i>Description</i> : 不能重复：组名称-group_name 
     * @param groups Groups
     * @return com.dxl.base.Result boolean
     * <br><br>Date: 2019-09-25     <br>Author : dxl
     */
    public Result isGroupsEditable(Groups groups);

    /**
    * <b> 获得树状目录
    * </b><br><br><i>Description</i> : 
    * @return java.util.List<com.dxl.base.ZTreeNode>
    * <br><br>Date: 2019/9/26 16:07     <br>Author : dxl 
    */
    public List<Groups> getTree(Integer pId);

    /**
      * <b> 获得分组的所有父分组
      * </b><br><br><i>Description</i> : 第一个为pId为0的分组节点，最后一个为本节点
      * @param groupsId
      * @return com.dxl.base.Result
      * <br><br>Date: 2019/10/3 16:51    <br>Author : dxl
      */
    public List<Groups> getParentGroups(Integer groupsId);
}
